class Solution(object):
    def combine(self, n, k):
        """
        :type n: int
        :type k: int
        :rtype: List[List[int]]
        """
        result = []
        
        def backtrack(start, path):
            # 如果当前路径长度等于k，找到一个组合
            if len(path) == k:
                result.append(path[:])  # 复制当前路径
                return
            
            # 从start开始遍历到n
            for i in range(start, n + 1):
                path.append(i)          # 选择当前数字
                backtrack(i + 1, path)  # 递归处理下一个位置
                path.pop()              # 撤销选择（回溯）
        
        backtrack(1, [])
        return result
